System and method for implementing an image ancillary to a cursor

ABSTRACT

A system and method to display an ancillary image which is movable with a cursor image. A cursor image indication is obtained which is indicative of the cursor image. An ancillary image indication is generated based on the cursor image indication. The cursor image and the ancillary image are displayed based on the cursor image indication and the ancillary image indication.

REFERENCE TO RELATED APPLICATION

The present application claims priority from U.S. provisionalapplication Ser. No. 60/138,433, filed on Jun. 10, 1999, entitled CURSORSHADOWS.

BACKGROUND OF THE INVENTION

The present invention relates to a computer system. More specifically,the present invention relates to a system which provides an ancillaryimage, ancillary to the cursor image.

Conventional computers, such as desktop computers, typically include avisual display screen, such as a cathode ray tube(CRT). Conventionalcomputers also typically include a user input pointing device, such as amouse. The mouse typically includes a ball and position encoders. As theuser moves the mouse over a work surface, the ball rotates and theposition encoders provide position information to the computer. Theposition information is indicative of the movement of the mouse. Basedon the position information, the computer system typically moves a mousecursor about the visual display screen allowing the user to acquiretargets on the visual display screen.

A conventional mouse also typically includes one or more actuatorbuttons. The actuator buttons are typically actuable by the operator bysimply depressing the selected button. Actuation of the buttons canimplement a number of different features. For example, where the userhas acquired a target (e.g., an icon), by placing the mouse cursor overthe icon on the visual display screen, the user may typically be able toselect the feature or program represented by that icon by simplydepressing one of the actuator buttons after the target has beenacquired.

In one conventional system, the cursor is associated with an arrow, orother visible display element which moves about the screen. The cursordisplay element or display image is conventionally treated the same asany other object on the display screen, from a depth perceptionstandpoint. Therefore, when the display screen is displaying a largenumber of icons, windows, or other display elements, the cursor can bedifficult to locate and follow during operation.

SUMMARY OF THE INVENTION

A system and method display in ancillary image which is movable with acursor image. A cursor image indication is obtained which is indicativeof the cursor image. An ancillary image indication is generated based onthe cursor image indication. The cursor image and the ancillary imageare displayed based on the cursor image indication and the ancillaryimage indication.

In one illustrative embodiment, the ancillary image is a shadow cast bythe cursor image. Therefore, while the cursor image is opaque, theancillary image is translucent. Of course, the ancillary image can takeany other of a wide variety of forms, some of which are discussed below.However, the ancillary image is movable along with the cursor duringoperation.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an exemplary environment for implementingthe present invention.

FIG. 2 illustrates a cursor image with an ancillary image in accordancewith one embodiment of the present invention.

FIG. 3 is a flow diagram illustrating creation and display of theancillary image in accordance with one embodiment of the presentinvention.

FIG. 4A is a flow diagram illustrating creation of an ancillary image ingreater detail in accordance with one embodiment of the presentinvention.

FIGS. 4B–4D illustrate the creation of an ancillary image as describedwith respect to FIG. 4A in accordance with one embodiment of the presentinvention.

FIG. 5A is a flow diagram illustrating creation of an ancillary image ingreater detail in accordance with one embodiment of the presentinvention.

FIGS. 5B and 5C illustrate the creation of the ancillary image asdescribed with respect to FIG. 5A.

FIG. 6A is a flow diagram illustrating the creation of an ALPHA-mask andSHADOW-mask in accordance with one embodiment of the present invention.

FIG. 6B illustrates the creation of the ALPHA and SHADOW-masks asdescribed with respect to FIG. 6A.

FIG. 7 is a flow diagram illustrating the blending of a cursor image andan ancillary image to a display screen.

FIGS. 8A–8C illustrate alternate embodiments of ancillary images inaccordance with further aspects of the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Overview

In one embodiment, the present invention is a method, apparatus anddisplay which enables cursor shapes or images to be displayed withshadows. In another embodiment, the present invention is a method,apparatus and display which enables cursor shapes or images to bespecified or represented by an alpha, red, green, blue (ARGB) bitmapimage. In one embodiment, the present invention provides an imageancillary to a cursor image. FIG. 1 and the related discussion areintended to provide a brief, general description of a suitable computingenvironment in which the invention may be implemented.

Although not required, the invention will be described, at least inpart, in the general context of computer-executable instructions, suchas program modules, being executed by a personal computer or othercomputing device. Generally, program modules include routine programs,objects, components, data structures, etc. that perform particular tasksor implement particular abstract data types. Moreover, those skilled inthe art will appreciate that the invention may be practiced with othercomputer system configurations, including hand-held devices,multiprocessor systems, microprocessor-based or programmable consumerelectronics, network PCs, minicomputers, mainframe computers, palmtopcomputers and the like. The invention is also applicable in distributedcomputing environments where tasks are performed by remote processingdevices that are linked through a communications network. In adistributed computing environment, program modules may be located inboth local and remote memory storage devices.

With reference to FIG. 1, an exemplary environment for the inventionincludes a general purpose computing device in the form of aconventional personal computer 20, including processing unit 21, asystem memory 22, and a system bus 23 that couples various systemcomponents including the system memory to the processing unit 21. Thesystem bus 23 may be any of several types of bus structures including amemory bus or memory controller, a peripheral bus, and a local bus usingany of a variety of bus architectures. The system memory includes readonly memory (ROM) 24 a random access memory (RAM) 25. A basicinput/output 26 (BIOS), containing the basic routine that helps totransfer information between elements within the personal computer 20,such as during start-up, is stored in ROM 24. The personal computer 20further includes a hard disk drive 27 for reading from and writing to ahard disk (not shown), a magnetic disk drive 28 for reading from orwriting to removable magnetic disk 29, and an optical disk drive 30 forreading from or writing to a removable optical disk 31 such as a CD ROMor other optical media. The hard disk drive 27, magnetic disk drive 28,and optical disk drive 30 are connected to the system bus 23 by a harddisk drive interface 32, magnetic disk drive interface 33, and anoptical drive interface 34, respectively. The drives and the associatedcomputer-readable media provide nonvolatile storage of computer readableinstructions, data structures, program modules and other data for thepersonal computer 20.

Although the exemplary environment described herein employs a hard disk,a removable magnetic disk 29 and a removable optical disk 31, it shouldbe appreciated by those skilled in the art that other types of computerreadable media which can store data that is accessible by a computer,such as magnetic cassettes, flash memory cards, digital video disks,Bernoulli cartridges, random access memory (RAM), read only memory(ROM), and the like, may also be used in the exemplary operatingenvironment.

A number of program modules may be stored on the hard disk, magneticdisk 29, optical disk 31, ROM 24 or RAM 25, including an operatingsystem 35, one or more application programs 36, other program modules37, and program data 38. A user may enter commands and information intothe personal computer 20 through input devices such as a keyboard 40 andpointing device (or mouse) 42. Other input devices (not shown) mayinclude a touch pad, roller ball, microphone, joystick, game pad,satellite dish, scanner, or the like. These and other input devices areoften connected to the processing unit 21 through one of a plurality ofports. For instance, keyboard 40 is connected through a keyboard port45, and mouse 42 is connected through serial port interface 46 but couldalso be connected through a MousePort or a PS/2 port.

In the illustrative embodiment, keyboard port 45 and serial portinterface 46 are coupled to the system bus 23. User input devices mayalso be connected by other interfaces, such as a sound card, a parallelport, a game port or a universal serial bus (USB). A monitor 47 or othertype of display device is also connected to the system bus 23 via aninterface, such as a video adapter 48 controlled by a graphics engineeither integrated with or located separately from operating system 35.Of course, the display can be provided on a CRT or any other type ofdisplay device, such as plasma display, an LED or LCD device, asexamples. In addition to the monitor 47, personal computers maytypically include other peripheral output devices such as a speaker andprinters (not shown).

The personal computer 20 may operate in a networked environment usinglogic connections to one or more remote computers, such as a remotecomputer 49. The remote computer 49 may be another personal computer, aserver, a router, a network PC, a peer device or other network node, andtypically includes many or all of the elements described above relativeto the personal computer 20, although only a memory storage device 50has been illustrated in FIG. 1. The logic connections depicted in FIG. 1include a local are network (LAN) 51 and a wide area network (WAN) 52.Such networking environments are commonplace in offices, enterprise-widecomputer network intranets and the Internet.

When used in a LAN networking environment, the personal computer 20 isconnected to the local area network 51 through a network interface oradapter 53. When used in a WAN networking environment, the personalcomputer 20 typically includes a modem 54 or other means forestablishing communications over the wide area network 52, such as theInternet. The modem 54, which may be internal or external, is connectedto the system bus 23 via the serial port interface 46. In a networkenvironment, program modules depicted relative to the personal computer20, or portions thereof, may be stored in the remote memory storagedevices. It will be appreciated that the network connections shown areexemplary and other means of establishing a communications link betweenthe computers may be used.

FIG. 2 illustrates a display screen 200 (such as that found on monitoror display device 47). Display screen 200 is illustrated with a cursorimage 202 displayed thereon. Cursor image 202 includes an opaque portion204 which is illustrated as an arrow-type pointer. However, it will beappreciated by those skilled in the art that the particular opaqueportion 204 of cursor image 202 can take substantially any shape. Inaccordance with one embodiment of the present invention, cursor image202 is represented by an alpha blended ARGB bitmap image. This can beaccomplished in any number of ways. For example, many operating systemshave built-in cursor image generation systems. One such system isdescribed below by way of example only, and is used in generating acursor image in accordance with one embodiment of the present invention.However, an alpha blended ARGB cursor image of the present invention canbe generated in any other desired fashion, such as by being directlyspecified by an application, thus bypassing the operating system'sbuilt-in cursor image generation.

Cursor image 202 also illustrates an ancillary image 206. In theembodiment illustrated in FIG. 2, ancillary image 206 is a shadow whichfollows opaque portion 204 of cursor image 202 around the screen, as thecursor is moved. While the arrow 204 is opaque, ancillary image 206 istranslucent such that the images displayed on screen 200 beneathancillary image 206 are visible, but shaded. Also, in the embodimentillustrated in FIG. 2, ancillary image (or shadow image) 206 is providedwith an umbra portion 208 and a penumbra portion 210. The umbra portion208, being located generally centrally on ancillary image 206, isdarker, while penumbra 210, being located toward the outer periphery ofancillary image 206, is more translucent. This gives the shadow a morerealistic and “fuzzy” appearance, rather than a sharp appearance. Ofcourse, ancillary image 206 can be implemented as simply a sharp image,as desired.

FIG. 3 is a flow diagram illustrating one embodiment of the formationand display of the ancillary image 206 along with opaque portion 204 ofcursor image 202. It should again be noted that creation of an alphablended ARGB bitmap cursor image can be directly specified by anapplication and need not have an ancillary image per se, but simply be acomposite image incorporating per pixel alpha and color values. FIG. 3describes but one embodiment of generation of an ARGB bitmap cursorimage, and also includes an ancillary image which is based on the cursorimage.

First, an indication of the cursor image is obtained. This is indicatedby block 212 in FIG. 3. The image of the cursor can be a bitmap or othersimilar indication which illustrates cursor image 202. Next, based onthe opaque portions of cursor image 202, the ancillary image 206 iscreated. This is indicated by block 214. In an embodiment in whichancillary image 206 is a shadow, the opaque portion 204 of cursor image202 can simply be augmented with an offset and translucency value inorder to obtain the ancillary image. This is described in greater detailbelow. Next, the opaque portion of the cursor and the ancillary imageare both displayed on the display screen. This is indicated by block216.

FIG. 4A illustrates the creation and display of an ancillary image ingreater detail. FIGS. 4B–4D illustrate portions of cursor image 200during the creation and display of the ancillary image 206 and opaqueportion 204.

Most cursor images 202 have an associated AND-mask. The AND-mask is amonochrome bitmap of the same dimensions as the bitmap defining thecursor image. In the associated AND-mask, each bit defines whether thecorresponding pixel in the cursor image is visible or non-visible. Forexample, FIG. 4B illustrates an AND-mask 220 for the cursor image 202shown in FIG. 2. The bits within arrow 222 (which corresponds to theopaque portion 204 of cursor image 202) are given a value of zero, whichmeans those pixels are visible. The bits residing within AND-mask 220,but outside of arrow 222 (i.e., which correspond to the invisible pixelsof cursor image 202—ignoring the ancillary image 206 for now) are givena value of 1 which indicate that the corresponding pixels are invisible.In any case, the cursor AND-mask is first obtained. This is indicated byblock 224 in FIG. 4A.

Next, in one illustrative embodiment, an ALPHA-mask (whichillustratively includes both alpha and color channel information) isobtained. This is described in greater detail below. Briefly, however,the AND-mask 220 is expanded and each invisible bit (bit value 1 on theAND-mask) is mapped to a value of zero, while each visible bit (bitvalue zero on the AND-mask) is mapped to a non-zero value. Creating theALPHA-mask is illustrated by block 226 in FIG. 4A. The ALPHA-mask isillustrated by FIG. 228 in FIG. 4C. ALPHA-mask 228 contains a silhouetteof the cursor 222 shown in AND-mask 220 of FIG. 4B. Thus, in oneembodiment, the ALPHA-mask is simply blended to the screen, and thecursor is drawn on top of the ALPHA-mask. This is shown by numeral 230in FIG. 4D, and is illustrated by blocks 232 and 234 in FIG. 4A.Blending the images to the screen can also be combined into a singlestep, and is discussed in greater detail below.

While the ALPHA-mask can be used to generate the ancillary image (inthis case a shadow), the ALPHA-mask has very sharply defined edges. Thismay not be the most aesthetically pleasing embodiment.

To create a more realistic looking ancillary image (e.g., a shadow), theedges of the ALPHA-mask can be softened. This is illustrated in greaterdetail in FIGS. 5A–5C. FIG. 5A is a flow diagram illustrating furthersteps which can be used to create a more aesthetically desirableancillary image. FIGS. 5B and 5C illustrate such images.

The first portion of FIG. 5A is similar to that shown in FIG. 4A, and issimilarly numbered. Therefore, the cursor AND-mask is first obtained asillustrated in block 224, and the ALPHA-mask is created as illustratedin block 226. As discussed above, the creation of the ALPHA-mask isdiscussed in greater detail below with respect to FIGS. 6A–6B.

However, in the embodiment illustrated in FIGS. 5A–5C, once theALPHA-mask is obtained, it is softened to obtain a shadow mask. In oneillustrative embodiment, the ALPHA-mask is filtered by a convolutionfilter, or another similar filter (such as an averaging filter) tosoften its edges.

In one illustrative embodiment, the ALPHA-mask is filtered twice with athree by three (box car) convolution filter which is well known in theart. Briefly, each resulting pixel value is computed as the average ofthe corresponding source pixel and its eight closest neighboring pixels.The contributing pixels form a three by three array of pixels centeredaround the corresponding source pixel. This type of filter has ablurring effect. Because the ALPHA-mask is subjected to the filteringoperation twice, the resultant shadow image now contains an interiorportion (or umbra) 236 shown in FIG. 5B, and an exterior portion (orpenumbra) 238. The interior portion 236 is darker while the exteriorportion 238 is more translucent. Of course, at this point, the pixelsoutside of the shadow have an alpha value of zero and the soft edgeshave a value somewhere between zero and one. This will be referred tohereinafter as the SHADOW-mask. Softening the ALPHA-mask to obtain theSHADOW-mask is illustrated by block 240 in FIG. 5A.

In the embodiment illustrated in FIG. 5A, the cursor image (242illustrated in FIG. 5C) and the shadow images 236 and 238 are combinedto obtain a combined image 244. This is indicated by block 246 in FIG.5A. The combined image 244 is ALPHA blended to the screen of monitor 47,as indicated by block 246. Combining the images is discussed in greaterdetail with respect to FIG. 7.

FIG. 6A is a flow diagram illustrating the creation of the ALPHA-maskand SHADOW-mask in greater detail. There is an inherent loss of data atthe edges of the cursor image due to the convolution filter. Further, inone illustrative embodiment, the convolution filtering operation isperformed twice, which exacerbates the problem.

Therefore, in an illustrative embodiment, in order to compensate forthis loss of data, the cursor AND-mask is initially expanded to a 32 bitper pixel bitmap in which invisible bits are mapped to a value of0×00000000 where, for example, the first eight most significant bits(the bits on the left of the value) are indicative of the alpha value.The visible bits in the AND-mask are mapped to a value which has anon-zero ALPHA value. During this enlarging or expansion operation,extra space is allocated along the borders of the bitmap to accommodatefor data loss. The border can be implemented, as an example, as a threepixel border. Enlarging the cursor AND-mask to create the border tocompensate for loss of data at the edge of the display is illustrated byblock 298 in FIG. 6A.

Translation of the AND-mask one values to zero and the AND-mask zerovalues to a non-zero alpha value is indicated by block 304 in FIG. 6A.

In addition, when the ancillary image is a shadow, it must be offsetfrom the primary image of the cursor. Of course, the offset value can bepredetermined or dynamically variable. Therefore, when the cursorAND-mask is expanded to the 32 bit per pixel bitmap, the pixels arepositioned within the expanded bitmap, shifted by a desired vertical andhorizontal offset value. FIG. 6B illustrates the original AND-mask 300for a cursor image which is expanded into the ALPHA-mask 302. It can beseen that, in the embodiment illustrated in FIG. 6B, the ALPHA-mask isformed by providing an extra border around the AND-mask, and shiftingthe AND-mask downwardly and to the right, within the ALPHA-mask 302.Obtaining an offset value is indicated by block 306 in FIG. 6A, andshifting the translated AND-mask image by the offset value to relocatethe ancillary image to a desired position (i.e., to obtain theALPHA-mask) is illustrated by block 308 in FIG. 6A.

Once the ALPHA-mask is obtained in this way, it is filtered any desirednumber of times to obtain the SHADOW-mask, as is described above. Thisis indicated by block 310 in FIG. 6A.

Once the SHADOW-mask has been obtained, the cursor image and theSHADOW-mask can be blended to the computer display in one of a widevariety of different ways. In one illustrative embodiment, an alphablending function is performed using an application programminginterface (API) known as the AlphaBlend supported by the WIN32 API setprovided by Microsoft Corporation of Redmond, Wash. Many different typesof alpha compositing operations can be performed to accomplish this.However, in one illustrative embodiment, a simple “source over”operation is used. In this type of compositing operation, each resultingpixel displayed is a function of a source, a current destination, and analpha value associated with the source as follows:Result=(source*alpha)+(1−alpha)*destination  Equation 1where the source color is the color of the shadow (e.g., black) and thedestination is the image on the computer screen which will reside underthe image being blended to the computer screen. The areas outside of theshadow and cursor have an alpha value of zero. Therefore, it can be seenfrom Equation 1 that the resulting pixels will be unmodified. The umbraportion of the SHADOW-mask has the highest alpha value, so thoseportions of the screen will have more black blended into the resultingpixels. The areas with an intermediate alpha value (the penumbras) willhave somewhat less black blended into the resulting pixel values.

This source over function is applied to each of the color channels asfollows:Result_(r)=(source_(r)*alpha)+(1−alpha)*destination_(r)  Equation 2Result_(g)=(source_(g)*alpha)+(1−alpha)*destination_(g)  Equation 3Result_(b)=(source_(b)*alpha)+(1−alpha)*destination_(b)  Equation 4

Subscript r designates the red channel, the subscript g designates thegreen channel and the subscript b designates the blue channel.Therefore, source_(r) corresponds to the red value for the pixel whilesources and source_(b) correspond to the green and blue source valuesfor that pixel, respectively.

The shadow can be alpha blended to the screen first and the cursor drawnon top of the blended shadow. Alternatively, the cursor and shadow canbe combined into a composite image and blended to the screen in a singlestep.

Further, the alpha values can be pre-multiplied against the sourcevalues. Therefore, instead of storing each pixel value as (r, g, b, a),the alpha values can be premultiplied against the red, green, and bluesource values such that the values stored are (a*r, a*g, a*b, a). Thisis advantageous because the “source over” operation described earlierrequires these values when computing the resulting pixel.

In any case, the combined cursor and shadow image will containcompletely opaque cursor pixels (which have an alpha value of one),translucent umbra and penumbra pixels (which have an alpha value betweenzero and one), and completely transparent pixels that are neither in thecursor nor the shadow (which have an alpha value of zero). The combinedimage can then be AlphaBlended to the screen in a single step using theAlphaBlend API set.

FIG. 7 is a flow diagram illustrating how certain APIs can be used toaccomplish the “source over” operation. Before discussing FIG. 7, it isfirst worth mentioning a number of terms used below. The AlphaBlendfunction is a function which displays bitmaps that have transparent orsemitransparent pixels. The AlphaBlend function includes a parameterwhich specifies the Alpha-Blending function for source and destinationbitmaps, such as the “source over” function.

The term BitBlt refers to a function which transfers pixels from aspecified source rectangle to a specified destination rectangle,altering the pixels according to a selected raster operation code. Thesupported raster operation codes include the SRCAND code which combinesthe colors of the source and destination rectangles by using the BOOLEANAND operator. The SRCPAINT code combines the colors of the source anddestination rectangles using the BOOLEAN OR operator.

Documentation regarding the above-described functions and APIs isavailable from the Microsoft Corporation of Redmond, Wash.

With this background, FIG. 7 can now be discussed. While FIG. 7 proceedswith respect to the above-described functions and APIs, it will beappreciated that this is for illustrative purposes only, and any otherdesired mechanism can be used to generate a composite image. Once theSHADOW-mask has been created as described above with respect to FIG. 6A,the graphics engine performs an SRCAND function of the cursor AND-maskinto the SHADOW-mask. The palette is set so that the AND-mask pixelvalues of zero are treated as the color transparent black (the (alpha,red, green, blue) values are (0.0, 0.0, 0.0, 0.0)) and the pixel valuesof one are treated as the color opaque white (the alpha, red, green,blue) values are (1.0, 1.0, 1.0, 1.0)). This combines the SHADOW-maskwith the AND-mask using a logical AND function, which essentially cuts ahole in the SHADOW-mask for the opaque cursor image. In other words,where the AND-mask is visible (having a pixel value of zero), the SRCANDfunction results in zero, and where the AND-mask is invisible (having apixel value of one), the SRCAND function results in the shadow remainingunchanged. This is indicated by block 320 in FIG. 7.

Next, the hole for the opaque cursor pixels is set to an alpha value ofone in the SHADOW-mask by performing an SRCPAINT function of the cursorAND-mask into the SHADOW-mask. The palette is set so that the AND-maskpixel values of zero are treated as the color opaque black (the (alpha,red, green, blue) values (1.0, 1.0, 1.0, 1.0)) and the pixel values ofone are treated as the color transparent black (the (alpha, red, green,blue) values are (0.0, 0.0, 0.0, 0.0)). This is indicated by block 322in FIG. 7.

Finally, the graphics engine performs an SRCPAINT of the cursor imageinto the SHADOW-mask. This combines the cursor image with theSHADOW-mask using the logical OR operator to plug the cursor image intothe hole left for it in the SHADOW-mask. This is indicated by block 324in FIG. 7. It should also be noted that the composite image can becreated by blending to a temporary bitmap and than simply copying thecontents of the temporary bitmap to the display screen.

Of course, as discussed above, when an application is directlyspecifying the cursor image, it can specify the cursor image as an alphablended ARGB image. If the cursor image is to include an ancillaryimage, the application can derive its own “ancillary” image and combinethat image with the original cursor image. In addition, the applicationcan do many other things, such as provide an artist-rendered ARGB bitmapwhich includes an artist-rendered shadow, specify alpha values such thatthe cursor image is anti-aliased with no shadow, specify combined alphaand color channels to provide substantially any desired affect (such asa glow or halo around the cursor image, translucent smoke emanating fromthe cursor image, etc).

FIGS. 8A–8C illustrate a number of additional embodiments of the presentinvention. FIG. 8A illustrates that the ancillary image (in theembodiment illustrated, it is a shadow) need not have a static offsetrelative to the primary or cursor image. For instance, if the ancillaryimage is indeed a shadow, and the simulated point light source is fixedin the center of the screen, the shadow will be cast in a differentdirection depending on the position of the cursor image on the screen,relative to the simulated point light source. For example, if the pointlight source is positioned at a central top portion 400 of the screenillustrated in FIG. 8A, and the cursor is located at position 402, theancillary image will be located downwardly and to the left of the cursorimage (i.e., the shadow will be cast in a direction away from the pointlight source). Similarly, if the cursor is placed in position 404, theshadow will be cast substantially straight downwardly from the cursorimage on the screen. Also, if the cursor is placed at position 406, theshadow will be offset downwardly and to the right of the cursor image.Of course, there need not be any visual display of the simulated pointlight source. This source is simply simulated based on how the shadow iscast.

Other embodiments are contemplated as well. For example, rather thanhaving a fixed point light source, the point light source can emulatethe sun, and can thus move from east to west (e.g., right to left)across the screen based on the time of day. In that case, the positionof the shadow will change depending on the current position of the pointlight source and the current position of the cursor relative to thepoint light source. Also, of course, rather than being located at acentral top region, the light source can be located at substantially anyposition on or off the screen such that the shadow will move about thecursor image based on its position relative to the point light source.

FIG. 8B illustrates yet another illustrative embodiment of the presentinvention. FIG. 8B illustrates the cursor placed at position 408 withrespect to a display screen that is also displaying a window or icon410. When the cursor is moved over the window or icon 410, the ancillaryimage (in the embodiment in which it is a shadow) is cast in the normalfashion. However, when the user depresses a mouse button (such as toacquire the target over which it is drifting) the cursor moves in thedirection indicated by arrows 412. That is, in response to a mouseclick, a message hook procedure executes to move the cursor image towhere the shadow image had just been displayed. This has the appearanceof the cursor moving downwardly onto the image over which it istraveling (and thus there is no shadowcast). Alternatively, for example,upon clicking the mouse button, the shadow can be replaced by a glow orhalo rather than being eliminated.

FIG. 8C illustrates yet another illustrative embodiment of the presentinvention. It will be appreciated that windows, or icons, 414illustrated in FIG. 8C can be layered over one another. In other words,the window in the foreground is displayed on top of the window in thebackground. Therefore, this gives the perception of depth within thedisplay screen. In the illustrative embodiment shown in FIG. 8C, whenthe cursor is placed in position 416, it is over the window in thebackground. Since the cursor is always on the top of the display screen,this has the effect of the cursor being a relatively large distance awayfrom the background window 414. Thus, the shadow or ancillary image isoffset a relatively large distance from the cursor image. However, whenthe cursor is moved to position 418, it is positioned over theforeground window and is located closer to that window than thebackground window. In the embodiment illustrated in FIG. 8C, theancillary image is thus offset by a smaller distance from the cursorimage to give the appearance that the shadow is cast on a surface whichis closer to the cursor image than the background window was. The depthinformation can be obtained from the data structure associated with theimage under the displayed position of the cursor image.

Similarly properties of the shadow can be changed to indicate depth. Forexample, shadows on windows or icons which are deeper are more blurry.This can be done, in one illustrative embodiment, simply by controllingapplication of the convolution filter.

The shadow offset can also be adjusted based on the size of the cursorimage. For example, when the cursor image is quite large, the offset canbe increased so the offset is not overwhelmed by the cursor size.Similarly, the offset can be decreased for smaller cursors so the shadowdoes not appear disconnected from the cursor image.

Of course, the present invention can be used with dynamic or animatedcursors as well. For example, some cursors commercially available todayare dynamic or animated cursors in that they move. As one illustration,a cursor can be embodied as a galloping horse, a swinging monkey, etc.In those embodiments, the shadow or ancillary image is moved along withthe dynamic or animated movement of the cursor image.

Similarly, the ancillary image need not only be a shadow. For example,the ancillary image can give the perception that the cursor image is astained glass window and the ancillary image is an image generated bylight impinging on the surface below the cursor image after the lighthas passed through the cursor image from the top. In that embodiment,the ancillary image is illustratively colored based on the color of thecursor. However, the ancillary image need not be opaque, as is thecursor image. In other words, if the cursor image is red, the ancillaryimage may be a light red tinted shadow image giving the impression of ared tint after light has passed through the red cursor image.

Similarly, the ancillary image can be one which reflects a simulatedproperty of the cursor. In other words, if the cursor is displayed tolook like a water droplet, the ancillary image can be a wavy shadow orimage which gives the appearance of light impinging on a surface afterit has traveled through water. In the illustrative embodiment, theancillary image simply moves with the cursor image and is based on somecharacteristic or property of the cursor image.

It can thus be seen that one illustrative embodiment of the presentinvention provides a cursor with a shadow. This can be accomplished inany number of ways, such as by simply displaying or rendering a cursorwhich includes a shadow as a part of its image, or by obtaininginformation indicative of the cursor image and deriving the shadow basedon the cursor information. Similarly, when the cursor and shadow areseparately obtained or derived, they can be separately rendered on thedisplay, or rendered as a composite image.

Other illustrative embodiments of the present invention include methods,displays and apparatus which provide cursor and associated ancillaryimages as ARGB bitmaps. The ancillary images can exhibit a wide varietyof characteristics.

Although the present invention has been described with reference topreferred embodiments, workers skilled in the art will recognize thatchanges may be made in form and detail without departing from the spiritand scope of the invention.

1. A method of displaying a cursor, comprising: obtaining a cursor imageindication, indicative of a cursor image; obtaining an ancillary imageindication, indicative of an ancillary image, based on the cursor imageindication; forming a composite image indication indicative of acomposite image containing both the cursor image and the ancillaryimage, a location at which the ancillary image is located being based ona location at which the cursor image is located; and, displaying thecomposite image.
 2. The method of claim 1 wherein obtaining a cursorindication comprises: obtaining a cursor AND-mask.
 3. The method ofclaim 2 wherein obtaining an ancillary image indication comprises:obtaining an ALPHA-mask based on the cursor AND-mask.
 4. The method ofclaim 3 wherein the cursor AND-mask comprises a bitmap having dimensionssimilar to dimensions of a bitmap defining the cursor image, and whereineach bit defines whether a display by a corresponding pixel is visibleor non-visible.
 5. The method of claim 4 wherein obtaining an ALPHA-maskcomprises: enlarging the AND-mask to include a border; translatingvalues in the AND-mask bitmap from visible values corresponding to avisible portion of the cursor image to translucent values; andrepositioning the translucent values within the enlarged AND-mask by adesired offset value.
 6. The method of claim 5 wherein repositioningcomprises: repositioning the translucent values by a predeterminedoffset value.
 7. The method of claim 5 wherein the repositioning stepcomprises: obtaining the desired offset value based on a dynamicallychanging variable; and repositioning the translucent values based on theobtained offset value.
 8. The method of claim 7 wherein obtaining thedesired offset value comprises: obtaining the desired offset value basedon a displayed position of the cursor image.
 9. The method of claim 8wherein obtaining the desired offset value comprises: obtaining thedesired offset value based on a displayed position of the cursor imageand a time of day.
 10. The method of claim 7 wherein obtaining thedesired offset value comprises: obtaining the desired offset value basedon data associated with an image underlying a displayed position of thecursor image.
 11. The method of claim 7 wherein obtaining the desiredoffset value comprises: obtaining the desired offset value based on anoperator input from a pointing device.
 12. The method of claim 7 whereinobtaining the desired offset value comprises: obtaining the desiredoffset value based on a size dimension of the cursor image.
 13. Themethod of claim 3 wherein the displaying step comprises: blending theancillary image to a display screen based on the ALPHA-mask; andblending the cursor image to the display screen based on the cursorAND-mask.
 14. The method of claim 13 wherein blending the ancillaryimage and blending the cursor image are performed by blending acomposite image, including an ancillary image component and a cursorimage component, to the display screen.
 15. The method of claim 13wherein blending the ancillary image and blending the cursor image eachcomprise: blending the ancillary image and the cursor image to atemporary bitmap; and copying the contents of the temporary bitmap tothe display screen.
 16. The method of claim 3 wherein the displayingstep comprises: blending the ancillary image to a display screenaccording to a function having a first term corresponding to a portionof the ancillary image displayed and a second term corresponding to aportion of an underlying image displayed.
 17. The method of claim 3 andfurther comprising: softening the ALPHA-mask.
 18. The method of claim 17wherein the softening step comprises: filtering the ALPHA-mask with anaveraging filter a desired number of times.
 19. The method of claim 18wherein the desired number of times is based on data associated with animage underlying a displayed position of the cursor image.
 20. Themethod of claim 1 wherein the ancillary image appears as a shadow of thecursor image.
 21. The method of claim 1 wherein the ancillary imageappears as an image formed by light impinging on a surface after passingthrough the cursor image.
 22. A computer readable medium containinginstructions which, when executed by a computer cause the computer toperform steps of: obtaining a cursor image indication, indicative of acursor image; obtaining an ancillary image indication, indicative of anancillary image, based on the cursor image indication; forming acomposite image indication indicative of a composite image containingboth the cursor image and the ancillary image, a location at which theancillary image is located being based on a location at which the cursorimage is located; and displaying the composite image.
 23. The computerreadable medium of claim 22 wherein obtaining a cursor indicationcomprises: obtaining a cursor AND-mask.
 24. The computer readable mediumof claim 22, further comprising: wherein obtaining a cursor imageindication comprises obtaining a cursor AND-mask; and wherein obtainingan ancillary image indication comprises obtaining an ALPHA-mask based onthe cursor AND-mask.
 25. The computer readable medium of claim 24wherein the cursor AND-mask comprises a bitmap having dimensions similarto dimensions of a bitmap defining the cursor image, and wherein eachbit defines whether a display by a corresponding pixel is visible ornon-visible.
 26. The computer readable medium of claim 25 whereinobtaining an ALPHA-mask comprises: enlarging the AND-mask to include aborder; translating values in the AND-mask bitmap from visible valuescorresponding to a visible portion of the cursor image to translucentvalues; and repositioning the translucent values within the enlargedAND-mask by a desired offset value.
 27. The computer readable medium ofclaim 26 wherein repositioning comprises: repositioning the translucentvalues by a predetermined offset value.
 28. The computer readable mediumof claim 26 wherein the repositioning step comprises: obtaining thedesired offset value based on a dynamically changing variable; andrepositioning the translucent values based on the obtained offset value.29. The computer readable medium of claim 28 wherein obtaining thedesired offset value comprises: obtaining the desired offset value basedon a displayed position of the cursor image.
 30. The computer readablemedium of claim 29 wherein obtaining the desired offset value comprises:obtaining the desired offset value based on a displayed position of thecursor image and a time of day.
 31. The computer readable medium ofclaim 28 wherein obtaining the desired offset value comprises: obtainingthe desired offset value based on data associated with an imageunderlying a displayed position of the cursor image.
 32. The computerreadable medium of claim 28 wherein obtaining the desired offset valuecomprises: obtaining the desired offset value based on an operator inputfrom a pointing device.
 33. The computer readable medium of claim 26wherein repositioning comprises: obtaining the desired offset valuebased on dimensions of the cursor image.
 34. The computer readablemedium of claim 24 wherein the displaying step comprises: blending theancillary image to a display screen based on the ALPHA-mask; andblending the cursor image to the display screen based on the cursorAND-mask.
 35. The computer readable medium of claim 34 wherein blendingthe ancillary image and blending the cursor image are performed byblending a composite image, including an ancillary image component and acursor image component, to the display screen.
 36. The computer readablemedium of claim 24 wherein the displaying step comprises: blending theancillary image to a display screen using according to a function havinga first term corresponding to a portion of the ancillary image displayedand a second term corresponding to a portion of an underlying imagedisplayed.
 37. The computer readable medium of claim 24 and furthercomprising: softening the ALPHA-mask.
 38. The computer readable mediumof claim 37 wherein the softening step comprises: filtering theALPHA-mask with an averaging filter a desired number of times.
 39. Thecomputer readable medium of claim 38 wherein the desired number of timesis based on data associated with an image underlying a displayedposition of the cursor image.